<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Creating a New Table</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="The SQL Language"
HREF="tutorial-sql.html"><LINK
REL="PREVIOUS"
TITLE="Concepts"
HREF="tutorial-concepts.html"><LINK
REL="NEXT"
TITLE="Populating a Table With Rows"
HREF="tutorial-populate.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="Concepts"
HREF="tutorial-concepts.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="tutorial-sql.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Chapter 2. The <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> Language</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Populating a Table With Rows"
HREF="tutorial-populate.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="TUTORIAL-TABLE"
>2.3. Creating a New Table</A
></H1
><P
>    You  can  create  a  new  table by specifying the table
    name, along with all column names and their types:

</P><PRE
CLASS="PROGRAMLISTING"
>CREATE TABLE weather (
    city            varchar(80),
    temp_lo         int,           -- low temperature
    temp_hi         int,           -- high temperature
    prcp            real,          -- precipitation
    date            date
);</PRE
><P>

    You can enter this into <TT
CLASS="COMMAND"
>psql</TT
> with the line
    breaks.  <TT
CLASS="COMMAND"
>psql</TT
> will recognize that the command
    is not terminated until the semicolon.
   </P
><P
>    White space (i.e., spaces, tabs, and newlines) can be used freely
    in SQL commands.  That means you can type the command aligned
    differently than above, or even all on one line.  Two dashes
    (<SPAN
CLASS="QUOTE"
>"<TT
CLASS="LITERAL"
>--</TT
>"</SPAN
>) introduce comments.
    Whatever follows them is ignored up to the end of the line.  SQL
    is case insensitive about key words and identifiers, except
    when identifiers are double-quoted to preserve the case (not done
    above).
   </P
><P
>    <TT
CLASS="TYPE"
>varchar(80)</TT
> specifies a data type that can store
    arbitrary character strings up to 80 characters in length.
    <TT
CLASS="TYPE"
>int</TT
> is the normal integer type.  <TT
CLASS="TYPE"
>real</TT
> is
    a type for storing single precision floating-point numbers.
    <TT
CLASS="TYPE"
>date</TT
> should be self-explanatory.  (Yes, the column of
    type <TT
CLASS="TYPE"
>date</TT
> is also named <TT
CLASS="STRUCTFIELD"
>date</TT
>.
    This might be convenient or confusing &mdash; you choose.)
   </P
><P
>    <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> supports the standard
    <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> types <TT
CLASS="TYPE"
>int</TT
>,
    <TT
CLASS="TYPE"
>smallint</TT
>, <TT
CLASS="TYPE"
>real</TT
>, <TT
CLASS="TYPE"
>double
    precision</TT
>, <TT
CLASS="TYPE"
>char(<TT
CLASS="REPLACEABLE"
><I
>N</I
></TT
>)</TT
>,
    <TT
CLASS="TYPE"
>varchar(<TT
CLASS="REPLACEABLE"
><I
>N</I
></TT
>)</TT
>, <TT
CLASS="TYPE"
>date</TT
>,
    <TT
CLASS="TYPE"
>time</TT
>, <TT
CLASS="TYPE"
>timestamp</TT
>, and
    <TT
CLASS="TYPE"
>interval</TT
>, as well as other types of general utility
    and a rich set of geometric types.
    <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> can be customized with an
    arbitrary number of user-defined data types.  Consequently, type
    names are not key words in the syntax, except where required to
    support special cases in the <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> standard.
   </P
><P
>    The second example will store cities and their associated
    geographical location:
</P><PRE
CLASS="PROGRAMLISTING"
>CREATE TABLE cities (
    name            varchar(80),
    location        point
);</PRE
><P>
    The <TT
CLASS="TYPE"
>point</TT
> type is an example of a
    <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
>-specific data type.
   </P
><P
>    

    Finally, it should be mentioned that if you don't need a table any
    longer or want to recreate it differently you can remove it using
    the following command:
</P><PRE
CLASS="SYNOPSIS"
>DROP TABLE <TT
CLASS="REPLACEABLE"
><I
>tablename</I
></TT
>;</PRE
><P>
   </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="tutorial-concepts.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="tutorial-populate.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Concepts</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="tutorial-sql.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Populating a Table With Rows</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>